package com.ktjy.listener;

import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;

@Component
@Slf4j
public class TaskListenerImpl implements TaskListener {

    @Autowired
    private RuntimeService runtimeService;

    @Override
    public void notify(DelegateTask delegateTask) {
        String taskName = delegateTask.getName();
        String processInstanceId = delegateTask.getProcessInstanceId();

        // 获取流程变量
        Map<String, Object> variables = runtimeService.getVariables(processInstanceId);
        String initiator = (String) variables.get("initiator");

        log.info("任务监听器执行: taskName={}, initiator={}", taskName, initiator);

        // 根据任务名称分配处理人
        if ("销售主管审批".equals(taskName)) {
            delegateTask.setAssignee("张三");
            log.info("任务分配给: 张三");
        } else if ("销售经理审批".equals(taskName)) {
            delegateTask.setAssignee("李四");
            log.info("任务分配给: 李四");
        } else if ("总经理审批".equals(taskName)) {
            delegateTask.setAssignee("李峰");
            log.info("任务分配给: 李峰");
        } else if ("活动发起人".equals(taskName) && initiator != null) {
            // 如果是驳回后的任务，分配给原提交人
            delegateTask.setAssignee(initiator);
            log.info("驳回任务分配给原提交人: {}", initiator);
        } else {
            log.warn("未匹配的任务名称: {}", taskName);
        }
    }
}
